package cn.yeziji.forum.annoataion;

import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 缓存返回 [测试]
 *
 * @author gzkemays
 * @since 2022/11/19 11:49 AM
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface SaveCache {
  /** 键值前缀 */
  String[] value();

  /**
   * mode
   *
   * <pre>
   *     0: opsValue
   *     1: opsHash
   * </pre>
   */
  int mode() default 0;

  /** hash 删除时需要补充 */
  String hashKey() default "";

  /** 是否开启模糊删除 */
  boolean blur() default false;

  /** 是否将请求参数拼接至 key */
  boolean joinReqParam() default false;

  /** 是否重新添加 */
  boolean refresh() default false;
  /** 根据 JSON KEY 从请求参数中获取对应的值进行拼接 */
  String[] jsonKey() default "";

  /** 拼接 key 的值，如 value = A 的时候 joinery 为 B 时，最后构造成 AB，如果搭配了 jsonKey，那么就会构造为 AB(JSON VALUE) */
  String joinery() default "";

  int time() default 1;

  TimeUnit unit() default TimeUnit.DAYS;
}
